package leetcode.editor.offer;

// https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/
class FanZhuanDanCiShunXuLcof {
    public static void main(String[] args) {
        Solution solution = new FanZhuanDanCiShunXuLcof().new Solution();
        solution.reverseWords("example   good a");
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        /**
         * 双指针法
         * 时间复杂度：O（n） 只遍历以一次数组
         * 空间复杂度：O（n） 生成了StringBuilder
         * @param s
         * @return
         */
        /*public String reverseWords(String s) {
            s.trim();   // 去除首尾空格
            int i = s.length() - 1, j = i;  // 从后面向前面分割一个单词
            StringBuilder sb = new StringBuilder();
            while (i >= 0) {
                while (i >= 0 && s.charAt(i) != ' ') i--;   // 此时找到了一个单词
                sb.append(s.substring(i + 1, j + 1) + " "); // 最后加上一个空格
                while (i >= 0 && s.charAt(i) == ' ') i--;   // 跳过空格
                j = i;  // 重新开始计算下一个单词
            }
            return new String(sb).trim();   // 再去掉最后一个空格
        }*/

        /**
         * 使用提供的API（面试不建议）
         *
         * @param s
         * @return
         */
        public String reverseWords(String s) {
            String[] split = s.trim().split(" ");
            StringBuilder sb = new StringBuilder();
            for (int i = split.length - 1; i >= 0; i--) {
                if (split[i].equals("")) continue; // 为空字符串直接跳过
                sb.append(split[i] + " ");
            }
            return new String(sb).trim();
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}

